package algoWing42.modelo;


public abstract class Avion extends ObjetoDinamico {
    /**
	 * 
	 */
	private static final long serialVersionUID = -6013712994977220919L;
	protected int energia;
    protected int valorEnPuntos;

    protected Avion(int x, int y, int radio) {
        super(x, y, radio);
    }

    public int getEnergia() {
        return this.energia;
    }

    /**
     * Se usa para restar y sumar energia.
     */
    protected void restarEnergia(int cantidad) {
        this.energia = this.energia - cantidad;

        if (this.energia <= 0) {
            this.destruir();
        }
    }

    /**
     * Metodo de dispatch versus un disparo cualquiera.
     */
    protected void colisionConDisparo(Disparo disparo) {
        this.restarEnergia(disparo.getDanio());
        if ((this.estaMuerto()== true) && (disparo.disparadoPorJugador()==true))
        	Juego.singleton().jugador().sumarAScore(valorEnPuntos);      	
    }

    /**
     * Metodo de dispatch versus el jugador.
     */
    public void colisionConJugador(AvionJugador jugador) {
        jugador.colisionConAvion(this);
        this.destruir();
    }
    
    public int getValorEnPuntos() {
        return valorEnPuntos;
    }
}
